(deftemplate Pacient
	(multislot nume)
	(slot varsta)
    (slot sex)
	(slot temperatura (allowed-values TRUE FALSE))
	(slot tusa)
	(slot culoarePiele)
	(slot localizareDurere)
	(slot nrUrinari)
)
;infectie urinara
(assert(Pacient(nume Craiasa Mirela)
        	(varsta 21)
        	(sex F)
	        (temperatura TRUE)
	        (tusa nu)
	        (culoarePiele normala)
	        (localizareDurere rinichi)
	        (nrUrinari 10)
        )
 )
;gripa
(assert(Pacient(nume Grigore Diana)
        	(varsta 35)
        	(sex F)
	        (temperatura TRUE)
	        (tusa expectoranta)
	        (culoarePiele normala)
	        (localizareDurere nu)
	        (nrUrinari 4)
        )
 )
;reumatism
(assert(Pacient(nume Dragan Vasile)
        	(varsta 33)
        	(sex M)
	        (temperatura FALSE)
	        (tusa nu)
	        (culoarePiele normala)
	        (localizareDurere picior)
	        (nrUrinari 4)
        )
 )
;infectie urinara si gripa
(assert(Pacient(nume Moise Mirel)
        	(varsta 40)
        	(sex M)
	        (temperatura TRUE)
	        (tusa expectoranta)
	        (culoarePiele normala)
	        (localizareDurere rinichi)
	        (nrUrinari 11)
        )
  )
;astm
(assert(Pacient(nume Danaila Mihai)
        	(varsta 33)
        	(sex M)
	        (temperatura FALSE)
	        (tusa seaca)
	        (culoarePiele normala)
	        (localizareDurere piept)
	        (nrUrinari 4)
        )
 )

(defrule infectU
    (declare (salience 2))
  (Pacient (nume $? ?p ?n)(temperatura ?x & TRUE )(localizareDurere rinichi)(nrUrinari ?u & : (> ?u 5)))
	
	=> (printout t "Persoana " ?p " " ?n " este diagnosticata cu infectie urinara" crlf)  
 )
(defrule gripa
    (declare (salience 1))
  (Pacient (nume $? ?p ?n)(temperatura ?x & TRUE )(tusa expectoranta))
	
	=> (printout t "Persoana " ?p " " ?n " este diagnosticata cu gripa" crlf)  
 )

(defrule astm
    (declare (salience 3))
  (Pacient (nume $? ?p ?n)(tusa seaca)(localizareDurere piept))
	
	=> (printout t "Persoana " ?p " " ?n " este diagnosticata cu astm" crlf)  
 )
(defrule reumatism
    (declare (salience 0))
  (Pacient (nume $? ?p ?n)(localizareDurere picior))
	
	=> (printout t "Persoana " ?p " " ?n " este diagnosticata cu reumatism" crlf)  
 )
(agenda)
(facts)
(run)